using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Net.Mail;
using System.Configuration;
using System.Net;

using MakeIT.Framework.Util;
using MakeIT.Look.Imagem.Entidades;
using MakeIT.Look.Imagem.Negocios;

namespace MakeIT.Look.Imagem.Apresentacao
{
    public partial class RecuperaUsuario : System.Web.UI.Page
    {
        protected LookDAOT daoT = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            this.daoT = new LookDAOT();

            this.TextBoxUsuario.Focus();
        }

        protected void Page_Unload(object sender, EventArgs e)
        {
            try
            {
                if (this.daoT != null)
                    this.daoT.closeDAO();
            }
            catch (Exception ex) { }
        }

        protected void rb_Checked1(object sender, EventArgs e)
        {
            this.TextBoxUsuario.Enabled = true;
            this.TextBoxEmail.Enabled = false;
            this.RegularExpressionValidator1.Enabled = false;
            this.TextBoxContato.Enabled = false;
            this.TextBoxContatoEmail.Enabled = false;
            this.RegularExpressionValidator2.Enabled = false;
            this.TextBoxContatoTelefone.Enabled = false;
            this.TextBoxEmpresa.Enabled = false;
            this.TextBoxUsuario.Focus();
        }
        protected void rb_Checked2(object sender, EventArgs e)
        {
            this.TextBoxUsuario.Enabled = false;
            this.TextBoxEmail.Enabled = true;
            this.RegularExpressionValidator1.Enabled = true;
            this.TextBoxEmpresa.Enabled = false;
            this.TextBoxContato.Enabled = false;
            this.TextBoxContatoEmail.Enabled = false;
            this.RegularExpressionValidator2.Enabled = false;
            this.TextBoxContatoTelefone.Enabled = false;
            this.TextBoxEmail.Focus();
        }
        protected void rb_Checked3(object sender, EventArgs e)
        {
            this.TextBoxUsuario.Enabled = false;
            this.TextBoxEmail.Enabled = false;
            this.RegularExpressionValidator1.Enabled = false;
            this.TextBoxEmpresa.Enabled = true;
            this.TextBoxContato.Enabled = true;
            this.TextBoxContatoEmail.Enabled = true;
            this.RegularExpressionValidator2.Enabled = true;
            this.TextBoxContatoTelefone.Enabled = true;
            this.TextBoxEmpresa.Focus();
        }

        protected void ButtonEnviar_Click(object sender, EventArgs e)
        {
            // esqueceu senha mas lembra usuario
            if (RadioButton1.Checked)
            {
                if (this.TextBoxUsuario.Text.Trim().Length == 0)
                {
                    Util.ExibeAlert(this, "Por favor, informe o nome do usuário.");
                }
                else
                {
                    //Tenta encontrar usuário pelo User
                    UsuarioVO usuarioVO = getUsuario(null, this.TextBoxUsuario.Text.Trim(), null);
                    
                    //Tenta encontar usuário pelo Nome
                    if (usuarioVO == null)
                    {
                        usuarioVO = getUsuario(this.TextBoxUsuario.Text.Trim(), null, null);
                        if (usuarioVO != null && !usuarioVO.nome.ToUpper().Equals(this.TextBoxUsuario.Text.Trim().ToUpper()))
                            usuarioVO = null;
                    }
                    
                    if (usuarioVO != null)
                    {
                        if (usuarioVO.email != null && usuarioVO.email.Length > 0)
                        {
                            sendEmail(usuarioVO);
                            Util.ExibeAlert(this, "Foi enviado um email com as informações solicitadas.\n Por favor verifique sua caixa de entrada, obrigado.");
                        }
                        else
                        {
                            Util.ExibeAlert(this, "Desculpe, não temos seu email cadastrado para enviar as informações solicitadas.\n Solicite ser contactado pelo suporte, obrigado.");
                        }

                    }
                    else
                    {
                        Util.ExibeAlert(this, "O nome do usuário informado não foi encontrado.");
                    }
                }
            }
            // esqueceu usuario e senha
            if (RadioButton2.Checked)
            {
                if (this.TextBoxEmail.Text.Trim().Length == 0)
                {
                    Util.ExibeAlert(this, "Por favor, informe o email.");
                }
                else
                {
                    //Tenta encontrar usuário pelo Email
                    UsuarioVO usuarioVO = getUsuario(null, null, this.TextBoxEmail.Text.Trim());

                    if (usuarioVO != null)
                    {
                        sendEmail(usuarioVO);
                        Util.ExibeAlert(this, "Foi enviado um email com as informações solicitadas.\n Por favor verifique sua caixa de entrada, obrigado.");
                    }
                    else
                    {
                        Util.ExibeAlert(this, "O email informado não foi encontrado.");
                    }

                }
            }
            // solicitou contato
            if (RadioButton3.Checked)
            {
                if (this.TextBoxEmpresa.Text.Trim().Length == 0)
                {
                    Util.ExibeAlert(this, "Por favor, informe o nome da Empresa.");
                }
                else if (this.TextBoxContato.Text.Trim().Length == 0)
                {
                    Util.ExibeAlert(this, "Por favor, informe o seu nome.");
                }
                else
                {
                    sendEmail2(this.TextBoxEmpresa.Text.Trim(), this.TextBoxContato.Text.Trim(), this.TextBoxContatoEmail.Text.Trim(), this.TextBoxContatoTelefone.Text.Trim());
                    Util.ExibeAlert(this, "Foi enviada uma notificação ao administrador do site, por favor aguarde o contato, obrigado.");
                }
            }

        }
        
        protected UsuarioVO getUsuario(string nome, string user, string email)
        {
            UsuarioVO usuarioVO = null;
            List<UsuarioVO> listUsuarioVOs = this.daoT.getUsuarios(null, nome, email, user, true);
            if (listUsuarioVOs != null && listUsuarioVOs.Count > 0)
            {
                usuarioVO = listUsuarioVOs[0];
            }
            return usuarioVO;
        }

        protected void sendEmail(UsuarioVO usuarioVO)
        {
            MailMessage oEmail = new MailMessage();
            MailAddress sDe = new MailAddress(ConfigurationSettings.AppSettings["Email.Administrador"]);

            oEmail.To.Add(usuarioVO.email);
            oEmail.From = sDe;
            oEmail.Priority = MailPriority.Normal;
            oEmail.IsBodyHtml = false;
            oEmail.Subject = "Solicitação de informações de usuário do site";
            oEmail.Body = "Foi solicitado em nosso sistema informações sobre recuperação de usuário:\n\n\n" +
                          "Nome: " + usuarioVO.nome + "\n" +
                          "Usuário: " + usuarioVO.user + "\n" +
                          "Senha: " + usuarioVO.pass + "\n\n\n\n" +
                          "*Este email foi enviado automaticamente pelo sistema - " + DateTime.Now.ToString();

            SmtpClient oEnviar = new SmtpClient();
            oEnviar.Host = ConfigurationSettings.AppSettings["Email.Host.SMTP"];
            oEnviar.Credentials = new NetworkCredential(
                                            ConfigurationSettings.AppSettings["Email.Administrador"],
                                            ConfigurationSettings.AppSettings["Email.Administrador.Pass"]);
            oEnviar.Send(oEmail);
            oEmail.Dispose();
        }
        protected void sendEmail2(string empresa, string contato, string email, string telefone)
        {
            MailMessage oEmail = new MailMessage();
            MailAddress sDe = new MailAddress(ConfigurationSettings.AppSettings["Email.Administrador"]);

            oEmail.To.Add(ConfigurationSettings.AppSettings["Email.Administrador"]);
            oEmail.From = sDe;
            oEmail.Priority = MailPriority.Normal;
            oEmail.IsBodyHtml = false;
            oEmail.Subject = "Solicitação de informações de usuário do site";
            oEmail.Body = "Foi solicitado contato para recuperação de usuário por parte de:\n\n\n" +
                          "Empresa: " + empresa + "\n" +
                          "Contato: " + contato + "\n" +
                          "Email: " + email + "\n" +
                          "Telefone: " + telefone + "\n\n\n\n" +
                          "*Este email foi enviado automaticamente pelo sistema - " + DateTime.Now.ToString();

            SmtpClient oEnviar = new SmtpClient();
            oEnviar.Host = ConfigurationSettings.AppSettings["Email.Host.SMTP"];
            oEnviar.Credentials = new NetworkCredential(
                                            ConfigurationSettings.AppSettings["Email.Administrador"],
                                            ConfigurationSettings.AppSettings["Email.Administrador.Pass"]);
            oEnviar.Send(oEmail);
            oEmail.Dispose();
        }
    
    }
}
